perm filename QANGLE.FAI[XGP,BGB] blob
sn#027253 filedate 1973-05-11 generic text, type T, neo UTF8
COMMENT ⊗ VALID 00002 PAGES
RECORD PAGE DESCRIPTION
00001 00001
00002 00002 NSUBR(QANGLE,VECT1,VECT2)-----------------------------------------
00004 ENDMK
⊗;
NSUBR(QANGLE,VECT1,VECT2)-----------------------------------------
ACCUMULATES{DX,DY,T1,T2,T3}
HRRZ T1,VECT1↔HRRZ T2,VECT2 ;GET INTO ACS
COL DX,T2↔ROW T3,T1↔SUB DX,T3 ;DIFFERENCE CO-ORDINATES
ROW DY,T2↔ROW T3,T1↔SUB DY,T3
MOVM T1,DX↔MOVM T2,DY↔SETZM SWPFLG# ;GET ABS OF DIFFERENCES
CAMG T1,T2↔SETOM SWPFLG ;REMEMBER IF DY>DX
CAMG T1,T2↔EXCH T1,T2 ;AND SWAP IF DY>DX
HRLZ T2,T2↔IDIV T2,T1↔ASHC T2,=12 ;ENTIER(DY/(DX*64))→T2, FACTION
HLRE T1,ATNTAB(T2) ;GET APPROXIMATE ANGLE FROM TABLE
HRLE T2,ATNTAB(T2) ;GET INTERPOLATION CONSTANT
IMUL T2,T3↔ADD T1,T3 ;MULTIPLY BY REMAINDER
HRREI T2,200000 ;IF SWAPPED,
SKIPE SWPFLG↔SUBM T2,T1 ;REFLECT ANGLE ABOUT DIAGONAL
SKIPGE DY↔ADDI T1,600000 ;GET INTO PROPER QUADRANT
SKIPGE DX↔TRC T1,200000
HRRE 1,T2↔POP2J
ATNTAB: BLOCK 101
INITCODE
EXTERNAL ATAN
MOVSI (<POPJ P,>)
MOVEM .
ATNGET: SETZM I#
MOVEI ATNTAB-1
MOVEM J#
SETOM LASTAN#
ATNGE2: JSA 16,ATAN
JUMP I
FMPR 0,[41721.5135]
MOVE 1,0
FSBR 0,LASTAN
FIX 0,234000 ;(?)
SKIPL LASTAN
HRRM 0,@J
MOVEM 1,LASTAN
FIX 1,233000
AOS J
HRLM 1,@J
MOVE 0,[0.015625]
FADB 0,I
CAMG 0,[1.00]
GO ATNGE2
POP0J
SUBREND